<!DOCTYPE html>
<html lang="zn">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>相等运算符</title>
    <script>
        /*
            相等运算符用来比较两个值是否相等
                如果相等则返回true，否则返回false
            
            使用==来做相等运算
                -当使用==来比较两个值时，如果值的类型不同，则会自动进行类型转换，将其转换为相同的类型，然后再比较
            不相等
                不相等用来判断两个值是否不相等，如果不相等返回true，否则返回false
                不相等也会对变量进行自动的类型转换，如果转换后相等他也会返回false

            ===
                全等
                -用来判断两个值是否全等，它和相等类似，不同的是它不会做自动的类型转换
                    如果两个值的类型不同，直接返回false

            !==
                不全等
                -用来判断两个值是否不全等，和不等类似，不同的是它不会做自动的类型转换
                    如果两个值的类型不同，直接返回true
        */

        console.log(1 == 1);//true
        var a = 10;
        console.log(a == 4);//false
        console.log("1"==1);//true
        console.log(true == "1");//true
        console.log(null == 0);//false
        
        // undefined衍生自null，所以这两个值做相等判断时，会返回true
        console.log(undefined == null);//true

        // NaN不和任何值相等，包括他本身
        console.log(NaN == NaN);//false

        var b = NaN;
        // 判断b的值是否是NaN
        console.log(b == NaN);//false
        // 可以通过isNaN()函数来判断一个值是否是NaN
            // 如果该值是NaN则返回true，否则返回false
        console.log(isNaN(b));//true

        console.log(10 != 5);//true
        console.log(10 != 10);//false

        console.log(123 === "123");//false
        console.log(null === undefined);//false

        console.log(1!=="1");//true
    </script>
</head>
<body>
    
</body>
</html>